package main

import "fmt"

func runArraySliceTest() {
	fmt.Println("runArraySliceTest fun run")
	defineArray()
}

func defineArray() {
	var arrInt [5]int // 定义一个长度为 5 的整型数组 ==未显式初始化的变量会赋予零值
	fmt.Println(arrInt)
	arrString := [3]string{"a", "b", "c"} // 定义并初始化一个长度为 3 的字符串数组
	fmt.Println(arrString)
	arrInt2 := [...]int{1, 2, 3} // 自动推断数组长度
	fmt.Println(arrInt2)
	//[0 0 0 0 0]
	//[a b c]
	//[1 2 3]
	arrSize3 := [3]int{1, 2, 3}
	arrSize4 := [4]int{1, 2, 3}
	fmt.Println(arrSize3) //[1 2 3]
	fmt.Println(arrSize4) //[1 2 3 0]
}

func defineSlice() {
	var arrInt [5]int // 定义一个长度为 5 的整型数组 ==未显式初始化的变量会赋予零值
	fmt.Println(arrInt)
	arrString := [3]string{"a", "b", "c"} // 定义并初始化一个长度为 3 的字符串数组
	fmt.Println(arrString)
	arrInt2 := [...]int{1, 2, 3} // 自动推断数组长度
	fmt.Println(arrInt2)
	//[0 0 0 0 0]
	//[a b c]
	//[1 2 3]
}

func useSlice() {
	slice1 := []int{1, 2, 3, 4, 5}
	slice2 := slice1[1:4]               // 派生出一个新切片，包含元素 [2, 3, 4]
	fmt.Printf("%v %T", slice1, slice1) //[1 2 3 4 5] []int
	fmt.Printf("%v %T", slice2, slice2) //[2 3 4] []int
}
